    //
    //  UITableViewCell+TZExtension.m
    //  TZOCExtension
    //
    //  Created by Tim.Z on 2017/1/3.
    //  Copyright © 2017年 Tim.Z. All rights reserved.
    //

#import "UITableViewCell+TZExtension.h"
#import <objc/runtime.h>

static int ktz_tableViewKey;

@interface UITableViewCell ()

@property (nonatomic, copy) NSString *theReuseID;

@end

@implementation UITableViewCell (TZExtension)

- (NSString *)theReuseID{
    return [NSString stringWithFormat:@"%@ID", NSStringFromClass([self class])];
}

- (UITableView *)tz_tableView{
    return [self tz_getAssociatedValueForKey:&ktz_tableViewKey];
}

- (void)setTz_tableView:(UITableView *)tz_tableView{
    [self tz_setAssociateWeakValue:tz_tableView withKey:&ktz_tableViewKey];
}

- (nullable __kindof UITableViewCell *)tz_cellNibWithTableView:(nullable UITableView *)tableView forIndexPath:(nullable NSIndexPath *)indexPath{
    
    __kindof UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.theReuseID];
    if (!cell) {
        [tableView registerNib:[UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil] forCellReuseIdentifier:self.theReuseID];
        cell = [tableView dequeueReusableCellWithIdentifier:self.theReuseID];
    }
    if (tableView.tz_VC) {
        self.tz_VC = tableView.tz_VC;
    }
    self.tz_tableView = tableView;
    
    return cell;
}

- (nullable __kindof UITableViewCell *)tz_cellClassWithTableView:(nullable UITableView *)tableView forIndexPath:(nullable NSIndexPath *)indexPath{
    
    __kindof UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.theReuseID];
    if (!cell) {
        [tableView registerClass:[self class] forCellReuseIdentifier:self.theReuseID];
        cell = [tableView dequeueReusableCellWithIdentifier:self.theReuseID];
    }
    if (tableView.tz_VC) {
        self.tz_VC = tableView.tz_VC;
    }
    self.tz_tableView = tableView;
    
    return cell;
}

@end
